﻿let path = require('path'),
    Webpack = require('webpack'),
    CleanWebpackPlugin = require('clean-webpack-plugin');

// resolve 函数获取绝对路径
function resolve(dir) {
    return path.join(__dirname, dir);
}

// 清空 plugins
module.exports = {
    // 入口：打包编译的入口文件
    entry: './src/index.js',
    output: {
        path: path.join(__dirname, '/dist/'),
        filename: 'echarts.min.js',
        libraryTarget: 'umd',
        library: 'echarts'
    },

    // 模块
    module: {
        // 规则
        rules: [
            {
                test: /\.js$/,
                loader: 'babel-loader',
                exclude: /node_modules/
            }
        ]
    },
    plugins: [
        // 打包完成后目录删除
        new CleanWebpackPlugin(
            ['dist'], // 删除的目录
            {
                verbose: true, // 在控制台显示删除操作
                dry: false // 是否禁用删除目录操作
                // exclude: ['test'] // 忽略的目录
            }
        ),

        // 压缩 js & css
        new Webpack.optimize.UglifyJsPlugin({
            // 对压缩后的 js 开启 source-map: 设置为 'source-map'字符串值时打包会产生 source-map js 文件，压缩代码的报错可对应到具体行
            // 启用 UglifyJsPlugin 时，如果要启用 devtool: "source-map"，需要开启 UglifyJsPlugin 的 sourceMap 为 true
            sourceMap: false,
            output: {
                comments: false // 删除注释
            },
            compress: {
                warnings: false, // 当删除没有用处的代码时, 显示警告
                dead_code: true, // 删除没有被引用的代码
                drop_debugger: true,
                drop_console: true
                // pure_funcs: ['console.log'] // 使用 drop_console 能过滤掉所有 console.error/warn/info() 等方法
            }
        })
    ],
    // 配置路径转换
    resolve: {
        // 引入文件类型省略后缀名称
        extensions: ['.js', '.json'],
        // 映射导入路径
        alias: {
            '@': resolve('src')
        }
    },
    // 禁用 sourcemap
    devtool: false
};